using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Collections;
using System.Data.SqlClient;

/// <summary>
/// Summary description for Class1
/// </summary>
public class DBMonitoreo : DALBase
{

    public static GeocercaBean getGeocercaBeanPK(String id)
    {

        GeocercaBean bean = null;

        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {

            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARD_S_GEOCERCA_PK", conn))
            {

                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@ID", id));

                using (SqlDataReader loDr = cmd.ExecuteReader())
                {
                    while (loDr.Read())
                    {
                        bean = new GeocercaBean();
                        bean.id = loDr.GetValue(loDr.GetOrdinal("ID")).ToString().Trim();

                        bean.descripcion = loDr.GetValue(loDr.GetOrdinal("DESCRIPCION")).ToString().Trim();

                        bean.puntos = loDr.GetValue(loDr.GetOrdinal("PUNTOS")).ToString().Trim();
                    }
                }
            }
        }

        return bean;
    }


    public static void addGeocercaBean(GeocercaBean bean)
    {
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {
            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARD_I_GEOCERCA", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@ID", bean.id));
                cmd.Parameters.Add(new SqlParameter("@DESCRIPCION", fnVerNuloStr(bean.descripcion)));
                cmd.Parameters.Add(new SqlParameter("@PUNTOS", fnVerNuloStr(bean.puntos)));
                cmd.Parameters.Add(new SqlParameter("@FLAG", fnVerNuloStr(bean.flag)));

                //cmd.ExecuteNonQuery();

                using (SqlDataReader loDr = cmd.ExecuteReader())
                {
                    while (loDr.Read())
                    {
                        bean.id = loDr.GetValue(loDr.GetOrdinal("ID")).ToString().Trim();
                    }
                }

            }
        }

    }

    public static List<GeocercaBean> findGeocercaBean()
    {
        List<GeocercaBean> lista = new List<GeocercaBean>();
        GeocercaBean bean = null;


        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {

            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARD_S_GEOCERCA", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                using (SqlDataReader loDr = cmd.ExecuteReader())
                {
                    while (loDr.Read())
                    {
                        bean = new GeocercaBean();
                        bean.id = loDr.GetValue(loDr.GetOrdinal("ID")).ToString().Trim();

                        bean.descripcion = loDr.GetValue(loDr.GetOrdinal("DESCRIPCION")).ToString().Trim();

                        bean.puntos = loDr.GetValue(loDr.GetOrdinal("PUNTOS")).ToString().Trim();

                        lista.Add(bean);
                    }
                }
            }
        }

        return lista;
    }

    public static BeanInfoMonitoreo findInfoMonitoreoWebBean(String codigoUsuario)
    {

        BeanInfoMonitoreo bean = null;


        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {

            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARDUSUARIO_S_INFO", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO", fnVerNuloStr(codigoUsuario)));


                using (SqlDataReader loDr = cmd.ExecuteReader())
                {

                    while (loDr.Read())
                    {


                        bean = new BeanInfoMonitoreo();

                        bean.nombre = loDr.GetValue(loDr.GetOrdinal("NOMBRE")).ToString().Trim();

                        bean.telefono = loDr.GetValue(loDr.GetOrdinal("TELEFONO")).ToString().Trim();

                        bean.modelo = loDr.GetValue(loDr.GetOrdinal("MODELO")).ToString().Trim();

                        bean.senal = fnInt(loDr.GetValue(loDr.GetOrdinal("SENAL")).ToString().Trim());

                        bean.bateria = fnInt(loDr.GetValue(loDr.GetOrdinal("BATERIA")).ToString().Trim());

                        bean.ultimalatitud = loDr.GetValue(loDr.GetOrdinal("ULTIMALATITUD")).ToString().Trim();

                        bean.ultimalongitud = loDr.GetValue(loDr.GetOrdinal("ULTIMALONGITUD")).ToString().Trim();

                        bean.ip = loDr.GetValue(loDr.GetOrdinal("IP")).ToString().Trim();

                    }



                }
            }
        }

        return bean;
    }


    public static List<MonitoreoBean> findMonitoreoWebBean(MonitoreoBean beanParametro, string usuarioSesion)
    {
        List<MonitoreoBean> lista = new List<MonitoreoBean>();
        MonitoreoBean bean = null;


        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {

            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARD_S_WEB", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO", fnVerNuloStr(beanParametro.codigo)));

                cmd.Parameters.Add(new SqlParameter("@FECHA", getStringFechaYYMMDDHHMM(beanParametro.fecha)));

                cmd.Parameters.Add(new SqlParameter("@FLAG", fnVerNuloStr(AbstractBean.ACTIVO)));

                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO_SESION", fnVerNuloStr(usuarioSesion)));

                cmd.Parameters.Add(new SqlParameter("@FLAG_SUPERVISOR", fnVerNuloStr(AbstractBean.ACTIVO)));

                cmd.Parameters.Add(new SqlParameter("@PAGINAACTUAL", beanParametro.paginaactual));

                cmd.Parameters.Add(new SqlParameter("@REGISTROPORPAGINA", beanParametro.registroporpagina));

                cmd.Parameters.Add(new SqlParameter("@BUSCAR_NAME", fnVerNuloStr(beanParametro.buscarname)));

                cmd.Parameters.Add(new SqlParameter("@BUSCAR_ORDEN", beanParametro.buscarorden));




                using (SqlDataReader loDr = cmd.ExecuteReader())
                {
                    Int64 total = 0;

                    while (loDr.Read())
                    {
                        ++total;

                        bean = new MonitoreoBean();
                        bean.codigo = loDr.GetValue(loDr.GetOrdinal("CODIGO")).ToString().Trim();

                        bean.nombre = loDr.GetValue(loDr.GetOrdinal("NOMBRE")).ToString().Trim();

                        bean.realizado = loDr.GetInt32(loDr.GetOrdinal("REALIZADO"));

                        bean.programado = loDr.GetInt32(loDr.GetOrdinal("PROGRAMADO"));

                        bean.inicio = loDr.GetValue(loDr.GetOrdinal("INICIO")).ToString().Trim();

                        bean.ultimo_registro = loDr.GetValue(loDr.GetOrdinal("ULTIMO_REGISTRO")).ToString().Trim();

                        //bean.duracion = loDr.GetValue(loDr.GetOrdinal("DURACION")).ToString().Trim();

                        //bean.tiempo_inactivo = loDr.GetValue(loDr.GetOrdinal("TIEMPO_INACTIVO")).ToString().Trim();

                        bean.idGeocerca = loDr.GetValue(loDr.GetOrdinal("IDGEOCERCA")).ToString().Trim();

                        bean.latitud = loDr.GetValue(loDr.GetOrdinal("ULTIMALATITUD")).ToString().Trim();

                        bean.longitud = loDr.GetValue(loDr.GetOrdinal("ULTIMALONGITUD")).ToString().Trim();

                        bean.tamaniototal = loDr.GetValue(loDr.GetOrdinal("TAMANIOTOTAL")).ToString().Trim();

                        lista.Add(bean);
                    }



                }
            }
        }

        return lista;
    }

    public static List<RegistroTrackBean> findMonitoreoMapaBean(string codigousuario, string fechamovil, string asistencia)
    {
        List<RegistroTrackBean> lista = new List<RegistroTrackBean>();
        RegistroTrackBean bean = null;


        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {

            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARD_MAPA", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO", fnVerNuloStr(codigousuario)));

                cmd.Parameters.Add(new SqlParameter("@FECHAMOVIL", getStringFechaYYMMDDHHMM(fechamovil)));

                cmd.Parameters.Add(new SqlParameter("@ASISTENCIA", fnVerNuloStr(asistencia)));


                using (SqlDataReader loDr = cmd.ExecuteReader())
                {
                    Int64 i = 0;
                    while (loDr.Read())
                    {
                        bean = new RegistroTrackBean();

                        bean.id = loDr.GetValue(loDr.GetOrdinal("ID")).ToString().Trim();

                        bean.tamaniototal = (++i) + "";

                        bean.codigoactividad = loDr.GetValue(loDr.GetOrdinal("CODIGOACTIVIDAD")).ToString().Trim();

                        bean.nombreactividad = loDr.GetValue(loDr.GetOrdinal("NOMBREACTIVIDAD")).ToString().Trim();

                        bean.direccion = loDr.GetValue(loDr.GetOrdinal("DIRECCION")).ToString().Trim(); // AGREGADO

                        bean.nombreestado = loDr.GetValue(loDr.GetOrdinal("NOMBREESTADO")).ToString().Trim();

                        bean.fechamovil = loDr.GetValue(loDr.GetOrdinal("FECHAMOVIL")).ToString().Trim();

                        bean.latitud = loDr.GetValue(loDr.GetOrdinal("LATITUD")).ToString().Trim();

                        bean.longitud = loDr.GetValue(loDr.GetOrdinal("LONGITUD")).ToString().Trim();

                        bean.observacion = loDr.GetValue(loDr.GetOrdinal("OBSERVACION")).ToString().Trim();

                        bean.motivoentrega = loDr.GetValue(loDr.GetOrdinal("MOTIVOENTREGA")).ToString().Trim();

                        bean.motivonoentrega = loDr.GetValue(loDr.GetOrdinal("MOTIVONOENTREGA")).ToString().Trim();

                        bean.codigousuario = loDr.GetValue(loDr.GetOrdinal("CODIGOUSUARIO")).ToString().Trim();

                        bean.asistencia = loDr.GetValue(loDr.GetOrdinal("ASISTENCIA")).ToString().Trim();

                        bean.idgeocerca = loDr.GetValue(loDr.GetOrdinal("IDGEOCERCA")).ToString().Trim();

                        lista.Add(bean);
                    }
                }
            }
        }

        return lista;
    }

    public static List<FotoDato> findMonitoreoFotoBean(string codigousuario, string fechamovil)
    {
        List<FotoDato> lista = new List<FotoDato>();
        FotoDato bean = null;


        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {

            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARD_FOTO", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO", fnVerNuloStr(codigousuario)));

                cmd.Parameters.Add(new SqlParameter("@FECHAMOVIL", getStringFechaYYMMDDHHMM(fechamovil)));

                using (SqlDataReader loDr = cmd.ExecuteReader())
                {

                    while (loDr.Read())
                    {
                        bean = new FotoDato();

                        bean.IdFoto = loDr.GetValue(loDr.GetOrdinal("ID")).ToString().Trim();
                        bean.codigousuario = loDr.GetValue(loDr.GetOrdinal("CODIGOUSUARIO")).ToString().Trim();
                        bean.FechaFoto = loDr.GetValue(loDr.GetOrdinal("FECHA")).ToString().Trim();

                        lista.Add(bean);
                    }


                }
            }
        }

        return lista;
    }

    public static FotoDato findMonitoreoFotoBean(string idFoto)
    {

        FotoDato bean = null;


        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {
            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARD_FOTO_PK", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@ID", idFoto));

                using (SqlDataReader loDr = cmd.ExecuteReader())
                {

                    while (loDr.Read())
                    {
                        bean = new FotoDato();

                        bean.Foto = (Byte[])loDr.GetValue(loDr.GetOrdinal("FOTO"));


                    }
                }
            }
        }

        return bean;
    }

    public static GeocercaBean findMonitoreoGeocercaPorCodigo(string id)
    {
        GeocercaBean bean = null;
        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {
            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARD_S_GEOCERCA_PK", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@ID", id));

                using (SqlDataReader loDr = cmd.ExecuteReader())
                {

                    while (loDr.Read())
                    {
                        bean = new GeocercaBean();
                        bean.descripcion = loDr.GetValue(loDr.GetOrdinal("DESCRIPCION")).ToString().Trim();
                        bean.puntos = loDr.GetValue(loDr.GetOrdinal("PUNTOS")).ToString().Trim();
                    }
                }
            }
        }

        return bean;
    }

    // DISPATCH

    public static List<ActividadReporteBean> findMonitoreoDispatch(ActividadReporteBean beanParametro, String usuarioSesion)
    {
        List<ActividadReporteBean> lista = new List<ActividadReporteBean>();
        ActividadReporteBean bean = null;

        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {

            using (SqlCommand cmd = new SqlCommand("USPW_MONITOREO_DISPATCH", conn)) //_V2
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@ACTIVIDAD", fnVerNuloStr(beanParametro.nombre)));
                cmd.Parameters.Add(new SqlParameter("@FLAG", AbstractBean.ACTIVO));
                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO_SESION", fnVerNuloStr(usuarioSesion)));
                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO", fnVerNuloStr(beanParametro.codigousuario)));
                cmd.Parameters.Add(new SqlParameter("@FECHAINICIO", getStringFechaYYMMDDHHMM(beanParametro.fechainicio)));

                cmd.Parameters.Add(new SqlParameter("@FLAG_SUPERVISOR", fnVerNuloStr(AbstractBean.ACTIVO)));
                cmd.Parameters.Add(new SqlParameter("@PIV_PAG_ACTUAL", beanParametro.paginaactual));
                cmd.Parameters.Add(new SqlParameter("@PIV_NUMERO_REGISTROS", beanParametro.registroporpagina));
                cmd.Parameters.Add(new SqlParameter("@BUSCARNAME", fnVerNuloStr(beanParametro.buscarname)));
                cmd.Parameters.Add(new SqlParameter("@BUSCARORDEN", beanParametro.buscarorden));


                using (SqlDataReader loDr = cmd.ExecuteReader())
                {
                    while (loDr.Read())
                    {
                        bean = new ActividadReporteBean();

                        bean.id = loDr.GetValue(loDr.GetOrdinal("ID")).ToString().Trim();

                        bean.codigoactividad = loDr.GetValue(loDr.GetOrdinal("CODIGOACTIVIDAD")).ToString().Trim();

                        bean.nombrecliente = loDr.GetValue(loDr.GetOrdinal("CLIENTE")).ToString().Trim();

                        bean.nombreestado = loDr.GetValue(loDr.GetOrdinal("NOMBREESTADO")).ToString().Trim();

                        bean.codigousuario = loDr.GetValue(loDr.GetOrdinal("CODIGOUSUARIO")).ToString().Trim();

                        bean.nombreusuario = loDr.GetValue(loDr.GetOrdinal("NOMBREUSUARIO")).ToString().Trim();

                        bean.descripcion = loDr.GetValue(loDr.GetOrdinal("DESCRIPCION")).ToString().Trim();

                        bean.finalizado = loDr.GetValue(loDr.GetOrdinal("FINALIZADO")).ToString().Trim();

                        bean.fechainiciorealizado = loDr.GetValue(loDr.GetOrdinal("FECHAINICIO")).ToString().Trim();

                        bean.codigocliente = loDr.GetValue(loDr.GetOrdinal("CODCLIENTE")).ToString().Trim();

                        bean.latitud = loDr.GetValue(loDr.GetOrdinal("LATITUD")).ToString().Trim();

                        bean.longitud = loDr.GetValue(loDr.GetOrdinal("LONGITUD")).ToString().Trim();

                        bean.tamaniototal = loDr.GetValue(loDr.GetOrdinal("TAMANIOTOTAL")).ToString().Trim();

                        lista.Add(bean);
                    }
                }
            }
        }

        return lista;
    }

    public static void updateMonitoreoDispatch(string codigoUsuario, string codigoActividad)
    {
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {
            using (SqlCommand cmd = new SqlCommand("USPW_MONITOREO_U_DISPATCH", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@USUARIO", fnVerNuloStr(codigoUsuario)));

                cmd.Parameters.Add(new SqlParameter("@ACTIVIDAD", fnVerNuloStr(codigoActividad)));

                cmd.ExecuteNonQuery();

            }
        }
    }


    public static List<UltimaPosicionBean> findUltimaPosicion(String CodigoPerfil, String Asistencia)
    {
        List<UltimaPosicionBean> lista = new List<UltimaPosicionBean>();

        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {
            using (SqlCommand cmd = new SqlCommand("USPW_MONITOREO_S_ULTIMAPOSICION", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@CODIGOPERFIL", fnVerNuloStr(CodigoPerfil)));
                cmd.Parameters.Add(new SqlParameter("@ASISTENCIA", fnVerNuloStr(Asistencia)));
                cmd.Parameters.Add(new SqlParameter("@FLAG", AbstractBean.ACTIVO));

                using (SqlDataReader loDr = cmd.ExecuteReader())
                {
                    while (loDr.Read())
                    {
                        UltimaPosicionBean bean = new UltimaPosicionBean();

                        bean.codigousuario = loDr.GetValue(loDr.GetOrdinal("CODIGO")).ToString().Trim();

                        bean.nombreusuario = loDr.GetValue(loDr.GetOrdinal("NOMBRE")).ToString().Trim();

                        bean.fecha = loDr.GetValue(loDr.GetOrdinal("ULTIMAFECHA")).ToString().Trim();

                        bean.latitud = loDr.GetValue(loDr.GetOrdinal("ULTIMALATITUD")).ToString().Trim();

                        bean.longitud = loDr.GetValue(loDr.GetOrdinal("ULTIMALONGITUD")).ToString().Trim();

                        bean.direccion = loDr.GetValue(loDr.GetOrdinal("ULTIMADIRECCION")).ToString().Trim(); // agregado

                        bean.asistencia = loDr.GetValue(loDr.GetOrdinal("ASISTENCIA")).ToString().Trim();

                        lista.Add(bean);

                    }
                }
            }
        }

        return lista;
    }



    public static ParametroMonitoreo obtenerParametroMonitoreo()
    {
        ParametroMonitoreo bean = new ParametroMonitoreo();
        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {
            using (SqlCommand cmd = new SqlCommand("USPW_PARAMETRO_S", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                using (SqlDataReader loDr = cmd.ExecuteReader())
                {
                    int i = 1;
                    while (loDr.Read())
                    {
                        switch (i)
                        {
                            case 1: bean.limiteInferiorValor = loDr.GetValue(loDr.GetOrdinal("VALOR")).ToString().Trim();
                                bean.limiteInferiorColor = loDr.GetValue(loDr.GetOrdinal("COLOR")).ToString().Trim();
                                i++; break;
                            case 2: bean.limiteMedioValor = loDr.GetValue(loDr.GetOrdinal("VALOR")).ToString().Trim();
                                bean.limiteMedioColor = loDr.GetValue(loDr.GetOrdinal("COLOR")).ToString().Trim();
                                i++;
                                break;
                            case 3:
                                bean.limiteSuperiorValor = loDr.GetValue(loDr.GetOrdinal("VALOR")).ToString().Trim();
                                bean.limiteSuperiorColor = loDr.GetValue(loDr.GetOrdinal("COLOR")).ToString().Trim();
                                i++;
                                break;
                            default:
                                i++;
                                break;
                        }
                    }
                }
            }
        }
        return bean;

    }

    //public static ParametroMonitoreo obtenerParametroMonitoreo()
    //{

    //    ArrayList alParameters = new ArrayList();
    //    ParametroMonitoreo parametroMonitoreo = new ParametroMonitoreo();

    //    DataSet data = DBUtilSQLServer.getDataset("USPW_PARAMETRO_S", alParameters);
    //    if (data.Tables[0].Rows.Count > 0)
    //    {
    //        parametroMonitoreo.limiteInferiorValor = data.Tables[0].Rows[0]["VALOR"].ToString();
    //        parametroMonitoreo.limiteInferiorColor = data.Tables[0].Rows[0]["COLOR"].ToString();
    //        parametroMonitoreo.limiteMedioValor = data.Tables[0].Rows[1]["VALOR"].ToString();
    //        parametroMonitoreo.limiteMedioColor = data.Tables[0].Rows[1]["COLOR"].ToString();
    //        parametroMonitoreo.limiteSuperiorValor = data.Tables[0].Rows[2]["VALOR"].ToString();
    //        parametroMonitoreo.limiteSuperiorColor = data.Tables[0].Rows[2]["COLOR"].ToString();
    //        //parametroMonitoreo.limiteVisita  = data.Tables[0].Rows[3]["VALOR"].ToString();
    //        //parametroMonitoreo.limiteVisitaColor  = data.Tables[0].Rows[3]["COLOR"].ToString();
    //        //parametroMonitoreo.limiteInactivoValor = data.Tables[0].Rows[4]["VALOR"].ToString();
    //        //parametroMonitoreo.limiteInactivoColor = data.Tables[0].Rows[4]["COLOR"].ToString();  

    //    }

    //    return parametroMonitoreo;
    //}

    public static List<AbstractBean> findDashboardMonitoreoExcel(MonitoreoBean beanParametro, string usuarioSesion)
    {
        List<AbstractBean> lista = new List<AbstractBean>();
        MonitoreoBean bean = null;

        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {

            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARD_S_MONITOREO_EXCEL", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO", fnVerNuloStr(beanParametro.codigo)));

                cmd.Parameters.Add(new SqlParameter("@FECHA", getStringFechaYYMMDDHHMM(beanParametro.fecha)));

                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO_SESION", fnVerNuloStr(usuarioSesion)));
                cmd.Parameters.Add(new SqlParameter("@FLAG_SUPERVISOR", fnVerNuloStr(AbstractBean.ACTIVO)));

                using (SqlDataReader loDr = cmd.ExecuteReader())
                {
                    while (loDr.Read())
                    {

                        bean = new MonitoreoBean();

                        bean.codigo = loDr.GetValue(loDr.GetOrdinal("CODIGO")).ToString().Trim();
                        bean.nombre = loDr.GetValue(loDr.GetOrdinal("NOMBRE")).ToString().Trim();
                        bean.realizado = loDr.GetInt32(loDr.GetOrdinal("REALIZADO"));
                        bean.programado = loDr.GetInt32(loDr.GetOrdinal("PROGRAMADO"));
                        bean.inicio = loDr.GetValue(loDr.GetOrdinal("INICIO")).ToString().Trim();
                        bean.ultimo_registro = loDr.GetValue(loDr.GetOrdinal("ULTIMO_REGISTRO")).ToString().Trim();
                        //bean.duracion = loDr.GetValue(loDr.GetOrdinal("DURACION")).ToString().Trim();
                        //bean.tiempo_inactivo = loDr.GetValue(loDr.GetOrdinal("TIEMPO_INACTIVO")).ToString().Trim();
                        bean.idGeocerca = loDr.GetValue(loDr.GetOrdinal("IDGEOCERCA")).ToString().Trim();
                        bean.latitud = loDr.GetValue(loDr.GetOrdinal("ULTIMALATITUD")).ToString().Trim();
                        bean.longitud = loDr.GetValue(loDr.GetOrdinal("ULTIMALONGITUD")).ToString().Trim();
                        //bean.tamaniototal = loDr.GetValue(loDr.GetOrdinal("TAMANIOTOTAL")).ToString().Trim();

                        lista.Add(bean);
                    }
                }
            }
        }

        return lista;
    }


    public static BeanInfoDispatch findInfoDispatchWebBean(String id, String fecha)
    {
        BeanInfoDispatch bean = null;

        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {
            using (SqlCommand cmd = new SqlCommand("USPW_DASHBOARDISPATCH_S_INFO", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@CODACTIVIDAD", fnVerNuloStr(id)));

                cmd.Parameters.Add(new SqlParameter("@FECHA", getStringFechaYYMMDDHHMM(fecha)));


                using (SqlDataReader loDr = cmd.ExecuteReader())
                {

                    while (loDr.Read())
                    {


                        bean = new BeanInfoDispatch();

                        bean.nombre = loDr.GetValue(loDr.GetOrdinal("NOMBRE")).ToString().Trim();

                        bean.telefono = loDr.GetValue(loDr.GetOrdinal("TELEFONO")).ToString().Trim();

                        bean.modelo = loDr.GetValue(loDr.GetOrdinal("MODELO")).ToString().Trim();

                        bean.senal = fnInt(loDr.GetValue(loDr.GetOrdinal("SENAL")).ToString().Trim());

                        bean.bateria = fnInt(loDr.GetValue(loDr.GetOrdinal("BATERIA")).ToString().Trim());

                        bean.errorposicion = fnInt(loDr.GetValue(loDr.GetOrdinal("ERRORPOSICION")).ToString().Trim());

                        bean.errorconexion = fnInt(loDr.GetValue(loDr.GetOrdinal("ERRORCONEXION")).ToString().Trim());


                    }



                }
            }
        }

        return bean;

    }




    public static List<FotoDato> subDescargaFoto(String pfecIni, String usuarioSesion)
    {
        List<FotoDato> loListaFoto = new List<FotoDato>();
        FotoDato loFotoDato = null;

        /**********************************************************************/
        using (SqlConnection conn = new SqlConnection(prCadConexion))
        {

            using (SqlCommand cmd = new SqlCommand("USPW_DESCARGA_FOTO", conn))
            {
                conn.Open();
                cmd.CommandTimeout = 0;
                cmd.CommandType = CommandType.StoredProcedure;

                //cmd.Parameters.Add(new SqlParameter("@FECINI", pfecIni));

                cmd.Parameters.Add(new SqlParameter("@FECINI", getStringFechaYYMMDDHHMM(pfecIni)));

                cmd.Parameters.Add(new SqlParameter("@CODIGOUSUARIO_SESION", fnVerNuloStr(usuarioSesion)));

                cmd.Parameters.Add(new SqlParameter("@FLAG_SUPERVISOR", fnVerNuloStr(AbstractBean.ACTIVO)));

                using (SqlDataReader loSDR = cmd.ExecuteReader())
                {

                    while (loSDR.Read())
                    {
                        loFotoDato = new FotoDato();
                        loFotoDato.IdFoto = loSDR.GetValue(loSDR.GetOrdinal("ID")).ToString().Trim();
                        loFotoDato.codigousuario = loSDR.GetValue(loSDR.GetOrdinal("CODIGO")).ToString().Trim();
                        loFotoDato.nombreUsuario = loSDR.GetValue(loSDR.GetOrdinal("NOMBRE")).ToString().Trim();
                        loFotoDato.nextel = fnInt(loSDR.GetValue(loSDR.GetOrdinal("NEXTEL")).ToString().Trim());
                        loFotoDato.Foto = (Byte[])loSDR.GetValue(loSDR.GetOrdinal("FOTO"));
                        loFotoDato.FechaFoto = loSDR.GetValue(loSDR.GetOrdinal("FECHA")).ToString().Trim();
                        loFotoDato.nombreArchivo = loSDR.GetValue(loSDR.GetOrdinal("NOMARCHIVO")).ToString().Trim();
                        loListaFoto.Add(loFotoDato);
                    }
                }
            }
        }

        return loListaFoto;
    }

    public static DataSet descargaCabecera(String fecinicio, String fecfin, String usuarioSesion)
    {
        ArrayList alParameters = new ArrayList();

        SqlParameter parameter;

        parameter = new SqlParameter("@IN_FECINICIO", SqlDbType.VarChar, 60);
        parameter.Value = getStringFechaYYMMDDHHMM(fecinicio);
        alParameters.Add(parameter);

        parameter = new SqlParameter("@IN_FECFIN", SqlDbType.VarChar, 60);
        parameter.Value = getStringFechaYYMMDDHHMM(fecfin);
        alParameters.Add(parameter);

        parameter = new SqlParameter("@CODIGOUSUARIO_SESION", SqlDbType.VarChar, 50);
        parameter.Value = fnVerNuloStr(usuarioSesion);
        alParameters.Add(parameter);

        parameter = new SqlParameter("@FLAG_SUPERVISOR", SqlDbType.VarChar, 1);
        parameter.Value = fnVerNuloStr(fnVerNuloStr(AbstractBean.ACTIVO));
        alParameters.Add(parameter);
        
        DataSet dst = DBUtilSQLServer.getDataset("USPC_DESCARGA_INFO", alParameters);
        dst.Tables[0].TableName = "REGISTRO";

        return dst;
    }
}
